CREATE procedure [dbo].[amsp_CMNavMenuSetup]
@WebsiteKey uniqueidentifier = null,
@NavContentGroupInd char(1) = 'N', @Runtime bit = 0
AS
BEGIN
DECLARE
@AncestoryHideFlag char(1),
@AncestoryNotPublishedFlag char(1),
@TemplatePath varchar(255),
@CategoryDepth integer,
@Name varchar(255),
@AncestoryList varchar(255),
@ChildNavMenuID numeric,
@NumChildren numeric,
@ContentID numeric,
@NavMenuID numeric,
@OldNavMenuID numeric,
@ParentNavMenuID numeric,
@OldPreFuseURL varchar(255),
@PreFuseURL varchar(255),
@PostFuseURL varchar(255),
@URLParamChar char(1),
@GECodePath varchar(255),
@AdminWebsiteKey varchar(50),
@VirtualDirectoryPath varchar(255)
SELECT a.*,
e.ImageInitial,
e.ImageOther,
e.ImageRollover,
e.BreadCrumb,
e.ImageWidth,
e.ImageHeight,
b.HideFlag AS ParentHideFlag,
b.PublishedDateTime AS ParentPubValue,
b.Name AS ParentName,
c.ShowInTemplateFlag,
c.OpenInNewWindowFlag,
c.SecureFlag AS ContentSecureFlag,
a.HideFlag AS AncestoryHideFlag,
'N' AS AncestoryNotPublishedFlag,
w.WebsiteRootURL,
w.SecureWebsiteRootURL,
w.GraphicsDirectory,
w.TemplateHeaderFileName,
w.TemplateFooterFileName,
w.SiteStyleSheet,
w.UseHierMenuFlag,
w.ShowBreadCrumbFlag,
w.UseAspNetTemplateFlag
INTO #NavMenu
FROM ((((Nav_Menu a WITH (NOLOCK)
LEFT OUTER JOIN Nav_Menu b WITH (NOLOCK) ON a.ParentNavMenuID = b.NavMenuID)
LEFT OUTER JOIN Content c WITH (NOLOCK) ON a.ContentID = c.ContentID AND c.WorkflowStatusCode = 'P'
AND c.PublishDateTime <= CURRENT_TIMESTAMP AND (c.ExpirationDate >= CURRENT_TIMESTAMP
OR c.ArchiveAtExpirationFlag IS NULL OR c.ArchiveAtExpirationFlag = 'N'))
LEFT OUTER JOIN Content_HTML d WITH (NOLOCK) ON c.ContentID = d.ContentID)
LEFT OUTER JOIN Nav_Menu_Feature e WITH (NOLOCK) ON a.NavMenuID = e.NavMenuID),
Website w
WHERE ((a.NavContentGroupInd = 'N' AND a.PublishedDateTime <= CURRENT_TIMESTAMP)
OR a.NavContentGroupInd = 'C')
AND (a.MicrositeFlag = 'N' OR a.MicrositeFlag IS NULL)
AND a.WebsiteKey = w.WebsiteKey
AND a.NavContentGroupInd = @NavContentGroupInd
ORDER BY a.NavContentGroupInd DESC, a.SortOrder
ALTER TABLE #NavMenu
ALTER Column PostFuseURL varchar(500) COLLATE database_default NULL
SELECT @AdminWebsiteKey = Value
FROM System_Variable WITH (NOLOCK)
WHERE Name = 'CMAdminWebsiteKey'
DELETE FROM #NavMenu
WHERE WebsiteKey = @AdminWebsiteKey
AND ComponentCode IS NOT NULL
AND ComponentCode NOT IN (SELECT ComponentCode FROM Component_Ref WITH (NOLOCK) WHERE ActiveFlag = 'Y')
CREATE INDEX #IDX1 on #NavMenu(NavMenuID)
CREATE INDEX #IDX2 on #NavMenu(ParentNavMenuID)
DECLARE c_Nav CURSOR FOR
SELECT Name,
ContentID,
NavMenuID,
ParentNavMenuID,
PreFuseURL,
PostFuseURL
FROM #NavMenu
WHERE IsNull(HideFlag,'N') = 'N'
ORDER BY SortOrder
OPEN c_Nav
FETCH NEXT FROM c_Nav INTO
@Name,
@ContentID,
@NavMenuID,
@ParentNavMenuID,
@PreFuseURL,
@PostFuseURL
SET @OldPreFuseURL = 'NOT INITIALIZED'
WHILE (@@FETCH_STATUS=0)
BEGIN
IF (CHARINDEX('MissingInclude',@OldPreFuseURL) > 0 AND
@ParentNavMenuID = @OldNavMenuID AND
CHARINDEX('MissingInclude',@PreFuseURL) =0)
BEGIN
UPDATE #NavMenu
SET PreFuseURL = @PreFuseURL,
PostFuseURL = @PostFuseURL
WHERE NavMenuID = @OldNavMenuID
END
SET @OldPreFuseURL = @PreFuseURL
SET @OldNavMenuID = @NavMenuID
FETCH NEXT FROM c_Nav
INTO
@Name,
@ContentID,
@NavMenuID,
@ParentNavMenuID,
@PreFuseURL,
@PostFuseURL
END
CLOSE c_Nav
DEALLOCATE c_Nav
SELECT @GECodePath = Value
FROM System_Variable
WHERE Name = 'GECodePath'
SELECT @VirtualDirectoryPath = Value
FROM System_Variable
WHERE Name = 'VirtualDirectoryPath'
IF Len(@GECodePath) > 1
SET @GECodePath = RIGHT(@GECodePath,Len(@GECodePath)-1)
ELSE IF @GECodePath = '/'
SET @GECodePath = ''
IF Len(@VirtualDirectoryPath) > 1
SET @VirtualDirectoryPath = RIGHT(@VirtualDirectoryPath,Len(@VirtualDirectoryPath)-1)
ELSE IF @VirtualDirectoryPath = '/'
SET @VirtualDirectoryPath = ''
UPDATE #NavMenu
SET PostFuseURL = CASE
WHEN IsNull(ShowInTemplateFlag,'Y') = 'Y' AND ContentSecureFlag = 'Y' THEN
a.SecureWebsiteRootURL + @GECodePath + 'Template.cfm' + '?Section=' + Name
WHEN IsNull(ShowInTemplateFlag,'Y') = 'Y' AND IsNULL(ContentSecureFlag, 'N') = 'N' THEN
a.WebsiteRootURL + @GECodePath + 'Template.cfm' + '?Section=' + Name
WHEN IsNULL(ShowInTemplateFlag, 'Y') = 'N' AND CHARINDEX('.CFM',UPPER(PreFuseURL)) > 0 AND ContentSecureFlag = 'Y' THEN
a.SecureWebsiteRootURL + @GECodePath + 'AMTemplate.cfm?Section=' + Name
WHEN IsNULL(ShowInTemplateFlag, 'Y') = 'N' AND CHARINDEX('.CFM',UPPER(PreFuseURL)) > 0 AND IsNULL(ContentSecureFlag, 'N') = 'N' THEN
a.WebsiteRootURL + @GECodePath + 'AMTemplate.cfm?Section=' + Name
ELSE
a.PreFuseURL
END
FROM #NavMenu a, Website b
WHERE CategoryDepth = 1
AND PostFuseURL != PreFuseURL
AND a.WebsiteKey = b.WebsiteKey
AND b.UseAspNetTemplateFlag = 'N'
UPDATE #NavMenu
SET PostFuseURL = CASE
WHEN IsNull(ShowInTemplateFlag,'Y') = 'Y' AND ContentSecureFlag = 'Y' THEN
a.SecureWebsiteRootURL + @VirtualDirectoryPath + '/' + Name + '/AM/ContentManagerNet/Default.aspx' + '?Section=' + Name
WHEN IsNull(ShowInTemplateFlag,'Y') = 'Y' AND IsNULL(ContentSecureFlag, 'N') = 'N' THEN
a.WebsiteRootURL + @VirtualDirectoryPath + '/' + Name + '/AM/ContentManagerNet/Default.aspx' + '?Section=' + Name
WHEN IsNULL(ShowInTemplateFlag, 'Y') = 'N' AND CHARINDEX('.ASPX',UPPER(PreFuseURL) ) > 0 AND ContentSecureFlag = 'Y' THEN
a.SecureWebsiteRootURL + @VirtualDirectoryPath + '/' + Name + '/AM/ContentManagerNet/Default.aspx?NoTemplate=1&Section=' + Name
WHEN IsNULL(ShowInTemplateFlag, 'Y') = 'N' AND CHARINDEX('.ASPX',UPPER(PreFuseURL) ) > 0 AND IsNULL(ContentSecureFlag, 'N') = 'N' THEN
a.WebsiteRootURL + @VirtualDirectoryPath + '/' + Name + '/AM/ContentManagerNet/Default.aspx?NoTemplate=1&Section=' + Name
ELSE
a.PreFuseURL
END
FROM #NavMenu a, Website b
WHERE CategoryDepth = 1
AND PostFuseURL != PreFuseURL
AND a.WebsiteKey = b.WebsiteKey
AND b.UseAspNetTemplateFlag = 'Y'
UPDATE #NavMenu
SET PreFuseURL = CASE
WHEN ContentSecureFlag = 'Y' THEN SecureWebsiteRootURL
ELSE WebsiteRootURL END +
CASE WHEN Left(PreFuseURL,1) = '/' THEN Right(PreFuseURL,Len(PreFuseURL)-1)
ELSE PreFuseURL END
WHERE PreFuseURL NOT LIKE 'htt%'
UPDATE #NavMenu
SET PostFuseURL = CASE
WHEN ContentSecureFlag = 'Y' THEN SecureWebsiteRootURL
ELSE WebsiteRootURL END +
CASE WHEN Left(PostFuseURL,1) = '/' THEN Right(PostFuseURL,Len(PostFuseURL)-1)
ELSE PostFuseURL END
WHERE PostFuseURL NOT LIKE 'http%'
UPDATE #NavMenu
SET AncestoryHideFlag = 'Y',
AncestoryNotPublishedFlag = CASE WHEN b.PublishedDateTime > CURRENT_TIMESTAMP
OR b.PublishedDateTime IS NULL THEN 'Y'
ELSE 'N' END
FROM #NavMenu a, Nav_Menu b WITH (NOLOCK)
WHERE a.AncestorNavMenuID = b.NavMenuID
AND b.HideFlag = 'Y'
IF @Runtime = 1
DELETE FROM #NavMenu
WHERE AncestoryHideFlag = 'Y'
OR AncestoryNotPublishedFlag = 'Y'
OR HideFlag = 'Y'
OR PublishedFlag = 'N'
IF @WebsiteKey IS NULL
SELECT * from #NavMenu
ORDER BY NavContentGroupInd DESC, SortOrder
ELSE
SELECT *
FROM #NavMenu
WHERE WebsiteKey = @WebsiteKey
ORDER BY NavContentGroupInd DESC, SortOrder
END
GO
GRANT EXECUTE ON [dbo].[amsp_CMNavMenuSetup] TO [IMIS]
GO